﻿using System;
using System.Text;
using System.Drawing;
using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public static partial class glDRIVE
{
    /*
    函数 gl.sqt1
    一元线性回归分析
    void sqt1(int n, double x[], double y[], double a[2], double dt[6])
    参数 n: 观测点数。
    参数 x: x[n],y[n]分别存放n个观测点的自变量值与观测值。
    参数 y: 
    参数 a: a[2]返回回归系数。a[1]为一次项系数，a[0]为常数项。
    参数 dt: dt[6]
    dt[0]返回偏差平方和
    dt[1]返回平均标准偏差；
    dt[2]返回回归平方和；
    dt[3]返回最大偏差；
    dt[4]返回最小偏差；
    dt[5]返回偏差平均值。
    */

    public static string drive_sqt1(int w, int h)
    {
        double[] dt = new double[6];
        double[] a = new double[2];
        double[] x = new double[11] { 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0 };
        double[] y = new double[11] { 2.75, 2.84, 2.965, 3.01, 3.20, 3.25, 3.38, 3.43, 3.55, 3.66, 3.74 };

        gl.sqt1(11, x, y, a, dt);

        string rs = "";
        rs += gl.html_table("回归系数", a);
        rs += gl.html_table("偏差平方和,平均标准偏差,回归平方和,最大偏差,最小偏差,偏差平均值", dt);

        double[] px = new double[2];
        px[0] = 0.0;
        px[1] = 1.0;
        double[] py = new double[2];
        py[0] = a[0] + a[1] * px[0];
        py[1] = a[0] + a[1] * px[1];

        rs += html_image(w, h, px, py,
            new double[] { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 },
            new double[] { 2.0, 2.5, 3.0, 3.5, 4.0 },
            x,
            y
            );

        return rs;
    }
}